package me.flyray.bsin.infrastructure.biz.paychannel.joinpay.domain.request;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;

/**
 * 汇聚支付（分账）API - 统一支付请求实体类 (带签名顺序)
 */
@Data
@Builder(toBuilder = true)
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class UniPayReq extends BaseRequest {

    @JsonProperty(value = "p2_OrderNo", index = 3)
    private String orderNo;

    @JsonProperty(value = "p3_Amount", index = 4)
    private BigDecimal amount;

    @JsonProperty(value = "p4_Cur", index = 5)
    private String cur;

    @JsonProperty(value = "p5_ProductName", index = 6)
    private String productName;

    @JsonProperty(value = "p6_ProductDesc", index = 7)
    private String productDesc;

    @JsonProperty(value = "p7_Mp", index = 8)
    private String mp;

    @JsonProperty(value = "p8_ReturnUrl", index = 9)
    private String returnUrl;

    @JsonProperty(value = "p9_NotifyUrl", index = 10)
    private String notifyUrl;

    @JsonProperty(value = "q1_FrpCode", index = 11)
    private String frpCode;

    @JsonProperty(value = "q2_MerchantBankCode", index = 12)
    private String merchantBankCode;

    @JsonProperty(value = "q4_IsShowPic", index = 13)
    private String isShowPic;

    @JsonProperty(value = "q5_OpenId", index = 14)
    private String openId;

    @JsonProperty(value = "q6_AuthCode", index = 15)
    private String authCode;

    @JsonProperty(value = "q7_AppId", index = 16)
    private String appId;

    @JsonProperty(value = "q8_TerminalNo", index = 17)
    private String terminalNo;

    @JsonProperty(value = "q9_TransactionModel", index = 18)
    private String transactionModel;

    @JsonProperty(value = "qa_TradeMerchantNo", index = 19)
    private String tradeMerchantNo;

    @JsonProperty(value = "qb_buyerId", index = 20)
    private String buyerId;

    @JsonProperty(value = "qc_IsAlt", index = 21)
    private String isAlt;

    @JsonProperty(value = "qd_AltType", index = 22)
    private String altType;

    @JsonProperty(value = "qe_AltInfo", index = 23)
    private String altInfo;

    @JsonProperty(value = "qf_AltUrl", index = 24)
    private String altUrl;

    @JsonProperty(value = "qg_MarketingAmount", index = 25)
    private BigDecimal marketingAmount;

    @JsonProperty(value = "qh_HbFqNum", index = 26)
    private String hbFqNum;

    @JsonProperty(value = "qi_FqSellerPercen", index = 27)
    private String fqSellerPercen;

    @JsonProperty(value = "qj_DJPlan", index = 28)
    private String djPlan;

    @JsonProperty(value = "qk_DisablePayModel", index = 29)
    private String disablePayModel;

    @JsonProperty(value = "ql_TerminalIp", index = 30)
    private String terminalIp;

    @JsonProperty(value = "qm_ContractId", index = 31)
    private String contractId;

    @JsonProperty(value = "qn_SpecialInfo", index = 32)
    private String specialInfo;
}
